home *** CD-ROM | disk | FTP | other *** search
/ Ancient Civilizations of the Mediterranean / Ancient Civilizations of the Mediterranean.iso / setup.mst < prev    next >
Text File  |  1995-04-28  |  12KB  |  436 lines

  1. '**************************************************************************
  2. '*                       MSSetup Telemedia
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG   ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9. '$INCLUDE 'setst.inc'
  10.  
  11. ''Dialog ID's
  12. CONST ASKQUIT      = 200
  13. CONST DESTPATH     = 300
  14. CONST EXITFAILURE  = 400
  15. CONST EXITQUIT     = 600
  16. CONST EXITSUCCESS  = 700
  17. CONST OPTIONS      = 800
  18. CONST APPHELP      = 900
  19. CONST RESTART      = 2600
  20. CONST RESTARTII    = 2700
  21. CONST CUSTINST     = 6200
  22. CONST TELEINST     = 6250
  23. CONST TOOBIG       = 6300
  24. CONST BADPATH      = 6400
  25.  
  26. ''Bitmap ID
  27. CONST LOGO         = 1
  28.  
  29. ''File Types
  30. CONST APPFILES     = 1
  31. CONST OPTFILES1    = 2
  32. CONST OPTFILES2    = 3
  33.  
  34. GLOBAL SRCDIR$
  35.  
  36. GLOBAL DEST$        ''Default destination directory.
  37. GLOBAL WINDRIVE$    ''Windows drive letter.
  38. GLOBAL WINDIR$
  39. GLOBAL WINSYSDIR$
  40. GLOBAL TBKDIR$
  41. GLOBAL SndDIR$
  42. GLOBAL SndZiel$
  43. GLOBAL TBKDEST$
  44. GLOBAL NEEDET&
  45. GLOBAL DRVSPACE&
  46. GLOBAL tb15Path$
  47.  
  48. '' Driver 
  49. CONST ADDVFW            = 1
  50. GLOBAL VFWPATH$
  51.  
  52.  
  53. ''CustInst list symbol names
  54.  
  55. ''Dialog list symbol names
  56. GLOBAL STATUSTEXT$
  57. GLOBAL DRIVETEXT$
  58.  
  59.  
  60. DECLARE SUB BuildCopyList
  61. DECLARE SUB CalculateCopyList
  62. DECLARE SUB SetDriveStatus
  63. DECLARE SUB RegisterEntries
  64. DECLARE SUB CreateIniEntries
  65. DECLARE SUB SetupProgman
  66.  
  67. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  68.  
  69. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  70. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  71. DECLARE SUB Reboot LIB "iniupd.dll"
  72. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  73.  
  74.  
  75. TRAP CleanupTrap From "MSSHLSTF.DLL"
  76.  
  77. End Trap           
  78.         
  79.  
  80.  
  81.         Inst% = HinstFrame()
  82.  
  83.  
  84.     ii% = CreateCover(0, 0, 0, 0, 0)
  85.     
  86.         ret% = Ctl3dRegister(Inst%)
  87.         ret% = Ctl3dAutoSubClass(Inst%)
  88.  
  89.         hSetup = InitSetup(COMMAND$)
  90.         hWnd% = HwndFrame()
  91.     ret% = SubSetMainWin(hWnd%)
  92.     
  93.     ii% = CloseCover()
  94.  
  95.  
  96.     WIN32ENABLED% = 0
  97.     MajorVer% = GetWindowsMajorVersion()
  98.     MinorVer% = GetWindowsMinorVersion()
  99.  
  100.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  101.         i% = DoMsgBox("Microsoft Windows version 3.10 is required to run this program.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  102.         END
  103.     END IF
  104.  
  105.         
  106.     IF DeviceColor() <= 16 THEN
  107.        ii% = DoMsgBox("Please, Set Your video number of colors to 256", "Hardware", MB_OK)
  108.        GOTO QUIT
  109.     END IF
  110.  
  111.  
  112. ON ERROR GOTO QUIT
  113.  
  114. INIT:
  115.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  116.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  117.     SetTitle "MEDITERRANEAN"
  118.     VFWPATH$ = "VFW\"
  119.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  120.     IF szInf$ = "" THEN
  121.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  122.     END IF
  123.  
  124.     ReadInfFile szInf$
  125.  
  126.     WINDRIVE$ = UCASE$(MID$(GetWindowsDir, 1, 1))
  127.     DEST$ = WINDRIVE$ + ":\mediterr"
  128.         WINDIR$ = GetWindowsDir()
  129.         WINSYSDIR$ = GetWindowsSysDir()
  130.  
  131.     ''CustInst list symbols
  132.  
  133.     STATUSTEXT$  = "StatusItemsText"
  134.     DRIVETEXT$   = "DriveStatusText"
  135.  
  136.     
  137.     FOR i% = 1 TO 3 STEP 1
  138.         AddListItem STATUSTEXT$, ""
  139.     NEXT i%
  140.  
  141.     FOR i% = 1 TO 2 STEP 1
  142.         AddListItem DRIVETEXT$, ""
  143.     NEXT i%
  144.  
  145.     ReplaceListItem DRIVETEXT$, 2, DEST$
  146.     
  147.     SetDriveStatus
  148.  
  149.  
  150. CUSTINST:
  151.     sz$ = UIStartDlg(CUIDLL$, TELEINST, "FTeleInstDlgProc", APPHELP, HELPPROC$)
  152.  
  153.     IF sz$ = "CONTINUE" THEN
  154.         ''Install only if it will fit.
  155.                 BuildCopyList
  156.                 CalculateCopyList
  157.                 IF NEEDET& <> 0 THEN
  158.                         GOSUB TOOBIG
  159.                         GOTO CUSTINST
  160.                 END IF
  161.         UIPop 1
  162.         GOTO INSTALL
  163.     ELSEIF sz$ = "PATH" THEN
  164.         GOTO GETPATH
  165.     ELSEIF sz$ = "REACTIVATE" THEN
  166.         SetDriveStatus
  167.         GOTO CUSTINST
  168.     ELSE
  169.         GOSUB ASKQUIT
  170.         GOTO CUSTINST
  171.     END IF
  172.  
  173.  
  174.  
  175. INSTALL:
  176.     CreateDir DEST$, cmoNone
  177.    
  178.     BuildCopyList
  179.     CopyFilesInCopyList
  180.     CreateIniEntries
  181.     RegisterEntries
  182.     SetupProgman
  183.  
  184.  
  185.     RESTRT% = RestartListEmpty ()
  186.     Exe$ = DEST$ + "\_msrstrt.exe"
  187.     Batch$ = DEST$ + "\_mssetup.bat"
  188.     empty$ = ""
  189.     
  190.  RESTART:
  191. IF RESTRT% = 0 THEN
  192.         sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  193.         IF sz$ = "REACTIVATE" THEN
  194.                 GOTO RESTART
  195.         ENDIF
  196.         I% = ExitExecRestart ()
  197.         RemoveFile Exe$, cmoForce
  198.         RemoveFile Batch$, cmoForce
  199.         END
  200. ELSE
  201.         sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  202.         IF sz$ = "CONTINUE" THEN
  203.                 I% = ExitWindowsExec (Exe$, empty$)
  204.                 IF I% = 0 THEN
  205.                         GOTO RESTART
  206.                 ELSE
  207.                         END
  208.                 ENDIF
  209.         ELSEIF sz$ = "EXIT" THEN
  210.                 UIPopAll
  211.                 END
  212.         ELSEIF sz$ = "REACTIVATE" THEN
  213.                 GOTO RESTART
  214.         ELSE
  215.                 UIPop 1
  216.         END IF
  217. END IF
  218.  
  219.  
  220. QUIT:
  221.     ''ON ERROR GOTO ERRQUIT
  222.  
  223.     IF ERR = 0 THEN
  224.         dlg% = EXITSUCCESS
  225.     ELSEIF ERR = STFQUIT THEN
  226.         dlg% = EXITQUIT
  227.     ELSE
  228.         dlg% = EXITQUIT          ''EXITFAILURE
  229.     END IF
  230.  
  231.  
  232. ERRQUIT:
  233.     i% = DoMsgBox("MEDITERRANEAN is not installed properly!", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  234.     END
  235.  
  236.  
  237.  
  238. GETPATH:
  239.     SetSymbolValue "EditTextIn", DEST$
  240.     SetSymbolValue "EditFocus", "END"
  241. GETPATHL1:
  242.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  243.  
  244.     IF sz$ = "CONTINUE" THEN
  245.         olddest$ = DEST$
  246.         DEST$ = GetSymbolValue("EditTextOut")
  247.  
  248.         ''Validate new path.
  249.         IF IsDirWritable(DEST$) = 0 THEN
  250.             GOSUB BADPATH
  251.             GOTO GETPATHL1
  252.         END IF
  253.         UIPop 1
  254.  
  255.         ''Truncate display if too long.
  256.         IF LEN(DEST$) > 23 THEN
  257.             ReplaceListItem DRIVETEXT$, 2, MID$(DEST$, 1, 23)+"..."
  258.         ELSE
  259.             ReplaceListItem DRIVETEXT$, 2, DEST$
  260.         END IF
  261.  
  262.         ''Recalc if path changed.
  263.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  264.             SetDriveStatus
  265.         END IF
  266.  
  267.         olddest$ = ""
  268.         GOTO CUSTINST
  269.     ELSEIF sz$ = "REACTIVATE" THEN
  270.         SetDriveStatus
  271.         GOTO GETPATHL1
  272.     ELSEIF sz$ = "EXIT" THEN
  273.         GOSUB ASKQUIT
  274.         GOTO GETPATHL1
  275.     ELSE
  276.         UIPop 1
  277.         GOTO CUSTINST
  278.     END IF
  279.  
  280.  
  281.  
  282. TOOBIG:
  283.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  284.     IF sz$ = "REACTIVATE" THEN
  285.         SetDriveStatus
  286.         GOTO TOOBIG
  287.     END IF
  288.     UIPop 1
  289.     RETURN
  290.  
  291.  
  292.  
  293. BADPATH:
  294.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  295.     IF sz$ = "REACTIVATE" THEN
  296.         SetDriveStatus
  297.         GOTO BADPATH
  298.     END IF
  299.     UIPop 1
  300.     RETURN
  301.  
  302.  
  303.  
  304. ASKQUIT:
  305.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  306.  
  307.     IF sz$ = "EXIT" THEN
  308.         UIPopAll
  309.         ERROR STFQUIT
  310.     ELSEIF sz$ = "REACTIVATE" THEN
  311.         GOTO ASKQUIT
  312.     ELSE
  313.         UIPop 1
  314.     END IF
  315.     RETURN
  316.  
  317.  
  318.  
  319. SUB CalculateCopyList STATIC
  320.         NEEDET& = GetCopyListCost("", "", "")   
  321. END SUB
  322.  
  323. SUB SetupProgman STATIC
  324.         '' Todo Add Progman Commands
  325.  
  326.         CreateProgmanGroup "MULTIMEDIA from E.M.M.E.", "", cmoOverwrite
  327.         ShowProgmanGroup "MULTIMEDIA from E.M.M.E.", 1, cmoNone
  328.         CreateProgmanItem "MULTIMEDIA from E.M.M.E.", "Mediterranean", MakePath(dest$,"mediterr.exe"),MakePath(DEST$,"mediterr.exe"), cmoOverwrite 
  329.  
  330. END SUB
  331.  
  332. SUB BuildCopyList STATIC
  333.  
  334.     SRCDIR$  = GetSymbolValue("STF_SRCDIR")
  335.     TBSRC$   = MakePath(SRCDIR$, TBKDIR$)        
  336.     sndSRC$  = MakePath(SRCDIR$, sndDIR$)        
  337.     snddest$ = MakePath(Dest$, SndZiel$)         
  338.     TBKDEST$ = MakePath(WINDIR$, "asym\runtime\")        
  339.     source$ = MakePath(srcdir$, "setup\")        
  340.  
  341.     ClearCopyList
  342.             addsectionFilesToCopyList "WINDO", SOURCE$, WINDIR$
  343.                    addsectionFilesToCopyList "DEFAULT", SOURCE$, DEST$
  344.         ''addsectionFilesToCopyList "SISTEM", SOURCE$, WINSYSDIR$
  345.  
  346.     IF ADDVFW <> 0 THEN                        
  347.         '' Video for Windows Files
  348.  
  349.         VFWSRC$= MakePath(SRCDIR$, VFWPATH$)    
  350.         addsectionFilesToCopyList "VfW Runtime", VFWSRC$, WINSYSDIR$
  351.         addsectionFilesToCopyList "OLE2", VFWSRC$, WINSYSDIR$
  352.         addsectionFilesToCopyList "ACM Drivers", VFWSRC$, WINSYSDIR$
  353.         addsectionFilesToCopyList "MPlayer", VFWSRC$, WINDIR$
  354.         addsectionFilesToCopyList "AVICodecs", VFWSRC$, WINSYSDIR$
  355.         AddSectionFilesToCopyList "remove", SrcDir$, WinSysDir$
  356.     END IF
  357. END SUB
  358.  
  359.  
  360. SUB CreateIniEntries STATIC
  361.  
  362.         '' Default Entries
  363.  ini$ = MakePath(WINDIR$, "mediterr.INI")
  364.         CreateIniKeyValue WinDir$ + "mediterr.ini","Path", "main", srcdir$, cmoOverwrite
  365.            valore$ = GetIniKeyString(WinDir$ + "system.ini", "mci", "WaveAudio")
  366.     valore$ = LCASE$(MID$(RTRIM$(LTRIM$(valore$)),1,11))
  367.     IF valore$ = "mciwave.drv" THEN
  368.         CreateIniKeyValue WinDir$ + "system.ini", "mci", "WaveAudio", "mciwave.drv 9", cmoOverwrite
  369.     END IF
  370.    
  371.         IF ADDVFW <> 0 THEN                        
  372.         '' Video for Windows Entries
  373.  
  374.     IF VflatdPresent() = 0 THEN
  375.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  376.     END IF
  377.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  378.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  379.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  380.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  381.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  382.     I% = DoesIniKeyExist (WinDir$ + "system.ini", "Drivers", "VIDC.RT21")
  383.     IF I% = 0  THEN
  384.        CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  385.     END IF
  386.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  387.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  388.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  389.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  390.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  391.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  392.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  393.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  394.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  395.  
  396.  
  397. END IF
  398. END SUB
  399.  
  400.  
  401. SUB RegisterEntries STATIC
  402.  
  403.         '' Default Registers
  404.  
  405.         
  406.         IF ADDVFW <> 0 THEN                        
  407.         '' Video for Windows Entries
  408.  
  409.                 Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  410.                 Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  411.                 Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  412.  
  413.         END IF
  414. END SUB
  415.  
  416.  
  417. SUB SetDriveStatus STATIC
  418.  
  419.     free& = GetFreeSpaceForDrive(MID$(DEST$, 1, 1))
  420.     ReplaceListItem DRIVETEXT$, 1, STR$(free& / 1024) + " K"
  421.  
  422. END SUB
  423.  
  424. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  425.     IF szDir$ = "" THEN
  426.         MakePath = szFile$
  427.     ELSEIF szFile$ = "" THEN
  428.         MakePath = szDir$
  429.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  430.         MakePath = szDir$ + szFile$
  431.     ELSE
  432.         MakePath = szDir$ + "\" + szFile$
  433.     END IF
  434. END FUNCTION
  435.  
  436.